var NAVTREE =
[
  [ "sgdk", "index.html", [
    [ "Related Pages", "pages.html", [
      [ "Deprecated List", "deprecated.html", null ]
    ] ],
    [ "Class List", "annotated.html", [
      [ "Animation", "struct_animation.html", null ],
      [ "AnimationFrame", "struct_animation_frame.html", null ],
      [ "animFrame", "structanim_frame.html", null ],
      [ "animSpriteInfo", "structanim_sprite_info.html", null ],
      [ "Bitmap", "struct_bitmap.html", null ],
      [ "Box", "struct_box.html", null ],
      [ "Circle", "struct_circle.html", null ],
      [ "Context3D", "struct_context3_d.html", null ],
      [ "FrameSprite", "struct_frame_sprite.html", null ],
      [ "genresAnimation", "structgenres_animation.html", null ],
      [ "genresPal", "structgenres_pal.html", null ],
      [ "genresSprites", "structgenres_sprites.html", null ],
      [ "genresTiles", "structgenres_tiles.html", null ],
      [ "Image", "struct_image.html", null ],
      [ "Line", "struct_line.html", null ],
      [ "Map", "struct_map.html", null ],
      [ "Mat2D_f16", "struct_mat2_d__f16.html", null ],
      [ "Mat3D_f16", "struct_mat3_d__f16.html", null ],
      [ "Mat4D_f16", "struct_mat4_d__f16.html", null ],
      [ "Palette", "struct_palette.html", null ],
      [ "Pixel", "struct_pixel.html", null ],
      [ "Rotation3D", "struct_rotation3_d.html", null ],
      [ "Sprite", "struct_sprite.html", null ],
      [ "SpriteDef", "struct_sprite_def.html", null ],
      [ "SpriteDefinition", "struct_sprite_definition.html", null ],
      [ "TCBloc", "struct_t_c_bloc.html", null ],
      [ "TileCache", "struct_tile_cache.html", null ],
      [ "TileSet", "struct_tile_set.html", null ],
      [ "Transformation3D", "struct_transformation3_d.html", null ],
      [ "Translation3D", "struct_translation3_d.html", null ],
      [ "Triangle", "struct_triangle.html", null ],
      [ "VDPPlan", "struct_v_d_p_plan.html", null ],
      [ "VDPSprite", "struct_v_d_p_sprite.html", null ],
      [ "Vect2D_f16", "struct_vect2_d__f16.html", null ],
      [ "Vect2D_s16", "struct_vect2_d__s16.html", null ],
      [ "Vect2D_s32", "struct_vect2_d__s32.html", null ],
      [ "Vect2D_u16", "struct_vect2_d__u16.html", null ],
      [ "Vect2D_u32", "struct_vect2_d__u32.html", null ],
      [ "Vect3D_f16", "struct_vect3_d__f16.html", null ],
      [ "Vect4D_f16", "struct_vect4_d__f16.html", null ]
    ] ],
    [ "Class Index", "classes.html", null ],
    [ "File List", "files.html", [
      [ "asm.h", "asm_8h.html", null ],
      [ "bmp.h", "bmp_8h.html", null ],
      [ "config.h", null, null ],
      [ "everdrive.h", "everdrive_8h.html", null ],
      [ "fat16.h", "fat16_8h.html", null ],
      [ "font.h", "font_8h.html", null ],
      [ "genesis.h", null, null ],
      [ "genres.h", null, null ],
      [ "joy.h", "joy_8h.html", null ],
      [ "kdebug.h", "kdebug_8h.html", null ],
      [ "libres.h", null, null ],
      [ "maths.h", "maths_8h.html", null ],
      [ "maths3D.h", "maths3_d_8h.html", null ],
      [ "memory.h", "memory_8h.html", null ],
      [ "psg.h", "psg_8h.html", null ],
      [ "smp_null.h", null, null ],
      [ "smp_null_pcm.h", null, null ],
      [ "sound.h", "sound_8h.html", null ],
      [ "sprite_eng.h", "sprite__eng_8h.html", null ],
      [ "sram.h", "sram_8h.html", null ],
      [ "string.h", "string_8h.html", null ],
      [ "sys.h", "sys_8h.html", null ],
      [ "tab_cnv.h", null, null ],
      [ "tab_vol.h", null, null ],
      [ "tfcplay.h", "tfcplay_8h.html", null ],
      [ "tile_cache.h", "tile__cache_8h.html", null ],
      [ "timer.h", "timer_8h.html", null ],
      [ "tools.h", "tools_8h.html", null ],
      [ "types.h", "types_8h.html", null ],
      [ "vdp.h", "vdp_8h.html", null ],
      [ "vdp_bg.h", "vdp__bg_8h.html", null ],
      [ "vdp_dma.h", "vdp__dma_8h.html", null ],
      [ "vdp_pal.h", "vdp__pal_8h.html", null ],
      [ "vdp_spr.h", "vdp__spr_8h.html", null ],
      [ "vdp_tile.h", "vdp__tile_8h.html", null ],
      [ "ym2612.h", "ym2612_8h.html", null ],
      [ "z80_ctrl.h", "z80__ctrl_8h.html", null ],
      [ "z80_mvsc.h", "z80__mvsc_8h.html", null ],
      [ "z80_vgm.h", "z80__vgm_8h.html", null ]
    ] ],
    [ "File Members", "globals.html", null ]
  ] ]
];

function createIndent(o,domNode,node,level)
{
  if (node.parentNode && node.parentNode.parentNode)
  {
    createIndent(o,domNode,node.parentNode,level+1);
  }
  var imgNode = document.createElement("img");
  if (level==0 && node.childrenData)
  {
    node.plus_img = imgNode;
    node.expandToggle = document.createElement("a");
    node.expandToggle.href = "javascript:void(0)";
    node.expandToggle.onclick = function() 
    {
      if (node.expanded) 
      {
        $(node.getChildrenUL()).slideUp("fast");
        if (node.isLast)
        {
          node.plus_img.src = node.relpath+"ftv2plastnode.png";
        }
        else
        {
          node.plus_img.src = node.relpath+"ftv2pnode.png";
        }
        node.expanded = false;
      } 
      else 
      {
        expandNode(o, node, false);
      }
    }
    node.expandToggle.appendChild(imgNode);
    domNode.appendChild(node.expandToggle);
  }
  else
  {
    domNode.appendChild(imgNode);
  }
  if (level==0)
  {
    if (node.isLast)
    {
      if (node.childrenData)
      {
        imgNode.src = node.relpath+"ftv2plastnode.png";
      }
      else
      {
        imgNode.src = node.relpath+"ftv2lastnode.png";
        domNode.appendChild(imgNode);
      }
    }
    else
    {
      if (node.childrenData)
      {
        imgNode.src = node.relpath+"ftv2pnode.png";
      }
      else
      {
        imgNode.src = node.relpath+"ftv2node.png";
        domNode.appendChild(imgNode);
      }
    }
  }
  else
  {
    if (node.isLast)
    {
      imgNode.src = node.relpath+"ftv2blank.png";
    }
    else
    {
      imgNode.src = node.relpath+"ftv2vertline.png";
    }
  }
  imgNode.border = "0";
}

function newNode(o, po, text, link, childrenData, lastNode)
{
  var node = new Object();
  node.children = Array();
  node.childrenData = childrenData;
  node.depth = po.depth + 1;
  node.relpath = po.relpath;
  node.isLast = lastNode;

  node.li = document.createElement("li");
  po.getChildrenUL().appendChild(node.li);
  node.parentNode = po;

  node.itemDiv = document.createElement("div");
  node.itemDiv.className = "item";

  node.labelSpan = document.createElement("span");
  node.labelSpan.className = "label";

  createIndent(o,node.itemDiv,node,0);
  node.itemDiv.appendChild(node.labelSpan);
  node.li.appendChild(node.itemDiv);

  var a = document.createElement("a");
  node.labelSpan.appendChild(a);
  node.label = document.createTextNode(text);
  a.appendChild(node.label);
  if (link) 
  {
    a.href = node.relpath+link;
  } 
  else 
  {
    if (childrenData != null) 
    {
      a.className = "nolink";
      a.href = "javascript:void(0)";
      a.onclick = node.expandToggle.onclick;
      node.expanded = false;
    }
  }

  node.childrenUL = null;
  node.getChildrenUL = function() 
  {
    if (!node.childrenUL) 
    {
      node.childrenUL = document.createElement("ul");
      node.childrenUL.className = "children_ul";
      node.childrenUL.style.display = "none";
      node.li.appendChild(node.childrenUL);
    }
    return node.childrenUL;
  };

  return node;
}

function showRoot()
{
  var headerHeight = $("#top").height();
  var footerHeight = $("#nav-path").height();
  var windowHeight = $(window).height() - headerHeight - footerHeight;
  navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
}

function expandNode(o, node, imm)
{
  if (node.childrenData && !node.expanded) 
  {
    if (!node.childrenVisited) 
    {
      getNode(o, node);
    }
    if (imm)
    {
      $(node.getChildrenUL()).show();
    } 
    else 
    {
      $(node.getChildrenUL()).slideDown("fast",showRoot);
    }
    if (node.isLast)
    {
      node.plus_img.src = node.relpath+"ftv2mlastnode.png";
    }
    else
    {
      node.plus_img.src = node.relpath+"ftv2mnode.png";
    }
    node.expanded = true;
  }
}

function getNode(o, po)
{
  po.childrenVisited = true;
  var l = po.childrenData.length-1;
  for (var i in po.childrenData) 
  {
    var nodeData = po.childrenData[i];
    po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
        i==l);
  }
}

function findNavTreePage(url, data)
{
  var nodes = data;
  var result = null;
  for (var i in nodes) 
  {
    var d = nodes[i];
    if (d[1] == url) 
    {
      return new Array(i);
    }
    else if (d[2] != null) // array of children
    {
      result = findNavTreePage(url, d[2]);
      if (result != null) 
      {
        return (new Array(i).concat(result));
      }
    }
  }
  return null;
}

function initNavTree(toroot,relpath)
{
  var o = new Object();
  o.toroot = toroot;
  o.node = new Object();
  o.node.li = document.getElementById("nav-tree-contents");
  o.node.childrenData = NAVTREE;
  o.node.children = new Array();
  o.node.childrenUL = document.createElement("ul");
  o.node.getChildrenUL = function() { return o.node.childrenUL; };
  o.node.li.appendChild(o.node.childrenUL);
  o.node.depth = 0;
  o.node.relpath = relpath;

  getNode(o, o.node);

  o.breadcrumbs = findNavTreePage(toroot, NAVTREE);
  if (o.breadcrumbs == null)
  {
    o.breadcrumbs = findNavTreePage("index.html",NAVTREE);
  }
  if (o.breadcrumbs != null && o.breadcrumbs.length>0)
  {
    var p = o.node;
    for (var i in o.breadcrumbs) 
    {
      var j = o.breadcrumbs[i];
      p = p.children[j];
      expandNode(o,p,true);
    }
    p.itemDiv.className = p.itemDiv.className + " selected";
    p.itemDiv.id = "selected";
    $(window).load(showRoot);
  }
}

